package com.xiaoshuidi.cloud.module.rooms.controller.admin.reservation.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * @Author Feng
 * @date 2023/6/7
 */
@Data
@Schema(description = "预定账单列表响应对象")
public class ReserveBillPageResp {
    @Schema(description = "id")
    private Long id;
    /**
     * 账单编号
     */
    @Schema(description = "账单编号")
    private String billNo;
    /**
     * 房源信息
     */
    @Schema(description = "房源信息")
    private String roomHouse;
    /**
     * 预订人姓名
     */
    @Schema(description = "预订人姓名")
    private String booker;
    /**
     * 账单类型 定金账单
     */
    @Schema(description = "账单类型 定金账单")
    private String billType;
    /**
     * 企业名称
     */
    @Schema(description = "企业名称")
    private String companyName;
    /**
     * 账单金额
     */
    @Schema(description = "账单金额")
    private BigDecimal billAmount;
    /**
     * 待收金额
     */
    @Schema(description = "待收金额")
    private BigDecimal receivable;
    /**
     * 支付期限
     */
    @Schema(description = "支付期限")
    private String depositPaymentTerm;
    /**
     * 付款状态 1未处理 2已处理 3已取消
     */
    @Schema(description = "付款状态 1未处理 2已处理 3已取消")
    private String paymentStatus;
    /**
     * 付款状态 1未处理 2已处理 3已取消
     */
    @Schema(description = "付款状态 1未处理 2已处理 3已取消")
    private String paymentStatusStr;

    /**
     * 预定电话
     */
    @Schema(description = "预定电话")
    private String bookerPhone;

    /**
     * 签约时间
     */
    @Schema(description = "签约时间")
    private String checkInDate;

    /**
     * 状态   待支付、已签约、待签约、已退定、已取消、失效
     */
    @Schema(description = "状态")
    private String status;

    /**
     * 状态  待支付、已签约、待签约、已退定、已取消、失效
     */
    @Schema(description = "状态")
    private String statusStr;

    @Schema(description = "预定时间")
    private String createTime;

    @Schema(description = "关联的房间")
    private Long roomHouseId;

    @Schema(description = "取消原因")
    private String cancelReason;

    @Schema(description = "退定金额")
    private BigDecimal withdrawAmount;

    @Schema(description = "退定时间")
    private LocalDateTime cancelTime;

    @Schema(description = "退定状态")
    private String withdrawStatus;

    @Schema(description = "退定状态")
    private String withdrawStatusStr;

    /**
     * 退定原因 1违约退定 2协商退定
     */
    @Schema(description = "退定原因")
    private Integer withdrawReason;

    @Schema(description = "预定失效日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate expirationDate;

}
